package mytest.com.myapplication;

import javax.inject.Singleton;

import dagger.Component;

/**
 * Created by 王家宝 on 2017/11/6.
 * Email:639586819@qq.com
 * Tel:18241150668
 */

/**
 * 二、使用@Component增加一个SaladComponent接口
 * 指明要在那些Module里寻找依赖
 * 方法也可以不写，不写将不会暴露方法给其他
 */
@Singleton
@Component(modules = {AnimalsMoudle.class})
public interface AnimalsComponent {

    Cat provideCat();

    Dog provideDog();


    /**
     * MainActivity的依赖Orange，而Orange又依赖了Knife，所以要把两者都引入
     * Orange provideOragne(Knife knife);//★注意：这里千万不能带参数，否则报错
     */
    Orange provideOrange();

    Knife provideKnife();


    /**
     * 以下两个方法是使用修饰符控制的,由于使用了String参数,所以需要定义该方法
     */
    @Type("normal")
    Milk provideNormalMilk();

    @Type("custmize")
    Milk provideCusMilk();

    String provideString();

    /**
     * 提供一个供目标类使用的注入方法
     *
     * @param mainActivity
     */
    void inject(MainActivity mainActivity);

    void inject(SecondActivity secondActivity);


}
